Allow HipchatAgent to use a shared credential

Alex Coomans 10 years ago
parent
commit
2f9c7b56a6
2 changed files with 8 additions and 2 deletions
  1. 2 2
      app/models/agents/hipchat_agent.rb
  2. 6 0
      spec/models/agents/hipchat_agent_spec.rb

+ 2 - 2
app/models/agents/hipchat_agent.rb

@@ -31,7 +31,7 @@ module Agents
31 31
     end
32 32
 
33 33
     def validate_options
34
-      errors.add(:base, "you need to specify a hipchat auth_token") unless options['auth_token'].present?
34
+      errors.add(:base, "you need to specify a hipchat auth_token or provide a credential named hipchat_auth_token") unless options['auth_token'].present? || credential('hipchat_auth_token').present?
35 35
       errors.add(:base, "you need to specify a room_name or a room_name_path") if options['room_name'].blank? && options['room_name_path'].blank?
36 36
     end
37 37
 
@@ -40,7 +40,7 @@ module Agents
40 40
     end
41 41
 
42 42
     def receive(incoming_events)
43
-      client = HipChat::Client.new(interpolated[:auth_token])
43
+      client = HipChat::Client.new(interpolated[:auth_token] || credential('hipchat_auth_token'))
44 44
       incoming_events.each do |event|
45 45
         mo = interpolated(event)
46 46
         client[mo[:room_name]].send(mo[:username], mo[:message], :notify => mo[:notify].to_s == 'true' ? 1 : 0, :color => mo[:color])

+ 6 - 0
spec/models/agents/hipchat_agent_spec.rb

@@ -42,6 +42,12 @@ describe Agents::HipchatAgent do
42 42
       @checker.should be_valid
43 43
     end
44 44
 
45
+    it "should also allow a credential" do
46
+      @checker.options['auth_token'] = nil
47
+      @checker.should_not be_valid
48
+      @checker.user.user_credentials.create :credential_name => 'hipchat_auth_token', :credential_value => 'something'
49
+      @checker.reload.should be_valid
50
+    end
45 51
   end
46 52
 
47 53
   describe "#receive" do